package com.globalwave.util
{
    import mx.rpc.events.ResultEvent;
    import mx.rpc.http.HTTPService;
  
    /**
     * 数据字典公共类
     * */
    public class DictUtil {
        private static var httpService : HTTPService = null ;
        private static var dicts : XML = null ; 
        
        public function DictUtil(){
        }

        /**
         * 必须尽早进行实例化，以取得数据。
         * 在Biz.mxml的init()中，先执行此方法，其它公用表态方法才可以使用
         * 
         * */
        public static function getInstance() : void {
            httpService = HttpServiceUtil.getService("/system/dict_list") ;
            httpService.addEventListener(ResultEvent.RESULT,dataLoaded) ;
            httpService.send(null) ;
        }
        
        /**
         * 服务器执行成功，返回数据处理
         * */
        private static function dataLoaded(event : ResultEvent) : void {
            var root : XML = new XML(event.result) ; 
            trace(root.toXMLString());
            dicts = root.datas[0] ;    
        }
        
        /*
        public static function getDictsByDomain1(domianId : String) : ArrayCollection {
            var result : ArrayCollection = new ArrayCollection() ;
            var element : Object = null ;
            var distXmlList : XMLList = dicts.Dict.(domain_=domianId) ;
            
            for (var i : int = 0 ; i < distXmlList.length() ; i ++) {
                element = new Object() ;
                element.data = distXmlList[i] ;
                element.label = distXmlList[i].name_ ;
                
                result.addItem(element) ;
            }
            
            return result ;
        }*/
        
        /**
         * 根据域，取得该域的数据字典列表。
         * 
         * @param domainId 域名
         * 
         * */
        public static function getDictsByDomain(domainId : String) : XMLList {
            return dicts.Dict.(domain_==domainId).copy() ;
        }
        
        
        public static function getSelectableDictsByDomain(domainId : String) : XMLList {
            var result : XMLList = dicts.Dict.(domain_==domainId).copy() ;
            
            var temp : XML = <root></root> ;
            temp.appendChild(<Dict><name_>请选择...</name_><code_></code_></Dict>) ;
            temp.appendChild(result) ;
            
            return temp.children() ; 
        }
        
        
        
        /**
         * 根据域和编码，取得该具体名称
         * 
         * @param domainId 域名
         * @param code 编码
         * 
         * */
        public static function getName(domianId : String, code : String) : String {
            var dicts : XMLList = dicts.Dict.((domain_==domianId) && (code_==code)) ;
            if (dicts == null || dicts.length() == 0) {
                return "" ;
            }
            return dicts[0].name_.toString() ;
        }
        
        public static function getIndex(dicts : XMLList, code:String) : int {
            
            for (var i : int = 0 ; i < dicts.length() ; i ++ ) {
                if (dicts[i].code_ == code) {
                   return i ;
                }
            }
            
            return -1 ;
        }
    }
}